The present invention relates to the planning and deployment of virtualized computing environments and in particular to using a cloud-definition language (CDL) to translate a set of requirements into a concise representation of the computing environment.
Embodiments of the present invention may use this CDL-based representation to generate an orchestration template from which an automated system can deploy the computing environment and predict its performance.
When a provider of virtual services, such as cloud provider, receives a client request for a virtual infrastructure component, a software application, a virtualized computing platform, or another virtual service, the provider may be expected to quickly design and deploy a complex virtualized computing environment. Such deployments must be performed with a high degree of reliability and with a minimal risk of reducing the provider's available resources to an unacceptable level.
Known cloud-deployment systems can automate certain steps of this procedure, but they do not offer end-to-end automation. Nor can they accurately predict a requested service's critical performance characteristics, such as throughput or response time, even when they can estimate future levels of network traffic and know the service provider's available resource levels.
This problem, rooted in automated-deployment technology, has been partially addressed by the use of cloud-orchestration templates. Such a template file may contain a generalized text-based description of a cloud service that can be customized into a detailed orchestration template that contains sufficient detail to allow the resource to be provisioned, orchestrated, or deployed.
One example of such a mechanism is the Heat service of the open-source OpenStack cloud-computing platform. Heat allows a cloud manager to automatically deploy a cloud-computing environment, a virtual machine, virtual infrastructure, or other instances of a virtual service by using a simple, human-readable language to describe the requested instances in a Heat-compatible orchestration template. Such a template may be created by adding instance-specific details to a generalized template written to accommodate the general class of requested service. The resulting orchestration template may then be processed by the OpenStack's automatic deployment system to fully deploy the requested instance.
Text-based templates used by services like Heat are intended to be manually generated by human cloud designers who have experience writing simple code. But this means that a template can be generated only after a designer has manually completed the time-consuming and technically complex task of designing a cloud architecture capable of satisfying user requirements.
This task becomes even more challenging when the designer must estimate performance characteristics or resource requirements of the requested services. Although it may be relatively simple to use empirical data or historical logs to predict the response time or throughput of a simple implementation, predicting the performance of a complex computing environment can be an enormous task.
Known automated orchestration mechanisms thus do not fully automate the task of deploying a cloud-computing service, infrastructure, application, or platform defined by a set of user requirements. Nor do they provide a manageable means of projecting estimated performance characteristics of a complex virtualized computing environment.